/* 
类型别名: 
  给特定的值或类型通过 type 来指定其别名, 后面通过别名来代表这个值或类型
  类型别名并没有定义新的类型, 而只是为了方便使用取的友好名称
*/
(() => {
// 给值取别名(一般是多个联合值) => 用于约定变量是指定的值
type Status = 1 | 0
type ActionType = 'REQUESTING' | 'REQ_SUCCESS' | 'REQ_ERROR'

let status: Status = 0   // 只能是0或者1
status = 1
// status = 2  // error

let type: ActionType = 'REQUESTING'
type = 'REQ_SUCCESS'
// type = 'abc' // error

// 给类型取别名 => 简化/语义化类型的引用的编码
type Name = string
let name: Name = 'tom'

interface Person {
  name: string
  age: number
}
let persons: Person[]
type PersonList = Person[]
let persons2: PersonList


})()